package partTwo;
/**
 * 本类用于测试面向对象的第一大特性--封装
 */
public class TestPrivate {
    public static void main(String[] args) {
        //4.创建学生类对象s
        Student s = new Student();
        //5.通过对象操作学生类的属性与方法
        System.out.println(s.name);   //因为name没有赋值，所有打印为初始值null
        s.study();     //正在学习中
        //*2subject属性在student中
//        s.subject = "java学习中";
//        System.out.println(s.subject);  //java学习中
        //6.3 在main方法中操作subject属性
        s.setSubject("CGB");//设置值
        System.out.println(s.getSubject());  //打印值
    }
}

//1.描述学生这一类型特征：学号 姓名 科目 功能 ：学习 吃饭 睡觉
class Student {
    //2.特征:学号 姓名 科目 ---成员变量/属性
    int sno;  //学号
    String name;  //姓名
    //*1private是一个修饰符，被它修饰的资源只能在本类中使用，是权限最小的修饰
    //6.1 封装subjec属性
    private  String subject;   //科目
    //6.2 我们需要提供一个公共的方式，供外界使用
    //右键空白行--Generate--Getter and Setter--选中subject属性
    /*如果一个方法需要返回结果，那么这个方法定义的返回值类型就不再是void了，
     * 至于具体设置成什么类型，与返回值的类型保持一致
     * 比如我们要返回的subject是String类型，所以方法的返回值类型为String
     * 返回值通过关键字return进行返回 */


    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        //如果一个类中的成员变量与局部变量同名，需要使用this关键字指定，我们规定this指定的是成员变量
        this.subject = subject;
    }

    //3.功能 ：学习 吃饭 睡觉
    public void study(){
        System.out.println("正在学习中");
    }
    public void eat(){
        System.out.println("正在吃饭中");
    }
    public void sleep(){
        System.out.println("正在睡觉中");
    }
}